export default function socketServer(io: any) {
  let userMap = new Map()

  io.on('connection', (socket: any) => {
    console.log('连接 socket.io 服务成功 ^_^ ~');
    
    // 用户上线：给用户分配 socket.id，然后放在 map 用中
    socket.on('online', (id: string) => {
      console.log(id + ' 上线了')
      userMap.set(socket.id, id)
      // console.log(userMap);
    })

    // 一对一消息
    socket.on('send', (e: any) => {
      // 发给好友信息的事件
      userMap.forEach((val, key) => {
        if (userMap.get(key) === e.fid) {
          socket.to(key).emit('receive', e)
        }
      })
      socket.emit('back', e)
    })

    // 用户离开，断开socket服务（刷新、关闭浏览器窗口）
    socket.on('disconnecting', () => {
      userMap.delete(socket.id)
      console.log(socket.id + ' 离开了')
    })

    // 用户下线：将 map 中对应用户删除
    socket.on('offline', (uid: string) => {
      console.log('-------------------------------');
      // 根据id找到对应的用户进行删除
      userMap.forEach((val, key) => {
        if (userMap.get(key) === uid) {
          userMap.delete(key)
        }
      })
      console.log(uid + ' 离开了')
      // console.log(userMap);
    })
  })
}